home *** CD-ROM | disk | FTP | other *** search
- *********DEBUGGER.PRG
- CLEAR
- SET TALK OFF
- SET EXACT OFF
- SET SAFETY OFF
- SET INTENSITY ON
- PROGNAME = SPACE(12)
- @ 5,5 SAY 'PROGRAM NAME : ' GET PROGNAME
- READ
- CLEAR
- ? 'PLEASE WAIT WHILE I SEARCH FOR THE FILE...'
- IF .NOT. '.' $(PROGNAME)
- PROGNAME = TRIM(PROGNAME)+".PRG"
- ENDIF
- PROGNAME = UPPER(PROGNAME)
- FILNAME = SUBSTR(PROGNAME,1,AT(".",PROGNAME)-1)
- USE DEBUGGER
- ZAP
- APPEND FROM &PROGNAME SDF
- GO TOP
- STORE " " TO ANS
- STORE 0 TO DOCASCNT
- STORE 0 TO DOWHICNT
- STORE 0 TO ENCASCNT
- STORE 0 TO ENDDOCNT
- STORE 0 TO ENDIFCNT
- STORE 0 TO IFCNT
- STORE 0 TO INDENT
- STORE 0 TO TAB
- CLEAR
-
- DO WHILE .NOT. EOF()
- MEMVAR = TRIM(LINELOCATE)
- DO WHILE SUBSTR(MEMVAR,1,1) = " "
- MEMVAR = SUBSTR(MEMVAR,2,LEN(MEMVAR)-1)
- ENDDO
- IF MEMVAR = "'" .OR. '"' $MEMVAR .OR. "*" $MEMVAR .OR."(" $MEMVAR
- PLACE = AT(" ",MEMVAR)
- MEMVAR = UPPER(SUBSTR(MEMVAR,1,PLACE))+;
- SUBSTR(MEMVAR,PLACE+1,LEN(MEMVAR)-PLACE+1)
- ELSE
- STORE UPPER(MEMVAR) TO MEMVAR
- ENDIF
- STORE .F. TO ADDONE,NOTADONE
- STORE .F. TO ELSE2,CASE2,TEXT
- DO CASE
- CASE MEMVAR = "CASE" .OR. MEMVAR = "OTHE"
- STORE .T. TO CASE2
- CASE MEMVAR = "DO CASE"
- STORE DOCASCNT +1 TO DOCASCNT
- TAB = 8
- ADDONE = .T.
-
- CASE MEMVAR = "DO WHIL"
- STORE DOWHICNT +1 TO DOWHICNT
- TAB = 3
- ADDONE = .T.è CASE MEMVAR = "ELSE"
- ELSE2 = .T.
- CASE MEMVAR = "ENDC"
- STORE ENCASCNT +1 TO ENCASCNT
- INDENT = INDENT -8
-
- CASE MEMVAR = "ENDD"
- STORE ENDDOCNT +1 TO ENDDOCNT
- INDENT = INDENT -3
- CASE MEMVAR = "ENDI"
- STORE ENDIFCNT +1 TO ENDIFCNT
- INDENT = INDENT -3
-
- CASE MEMVAR = "IF "
- STORE IFCNT+1 TO IFCNT
- TAB = 3
- ADDONE = .T.
-
- CASE MEMVAR = "TEXT"
- STORE .T. TO TEXT
- ENDCASE
- REPLACE LINELOCATE WITH SPACE(INDENT)+MEMVAR
- IF ELSE2
- INDENT = INDENT - TAB
- REPLACE LINELOCATE WITH SPACE(INDENT) + MEMVAR
- INDENT = INDENT + TAB
- ENDIF
- IF CASE2
- INDENT = INDENT - 5
- REPLACE LINELOCATE WITH SPACE(INDENT) + MEMVAR
- INDENT = INDENT +5
- ENDIF
- IF ADDONE
- INDENT=INDENT + TAB
- ENDIF
- REPLACE LINELOCATE WITH TRIM(LINELOCATE)
- ? TRIM(LINELOCATE)
- IF TEXT
- SKIP
- DO WHILE .NOT. "ENDT" $(UPPER(LINELOCATE))
- ? TRIM(LINELOCATE)
- SKIP
- ENDDO (MEMVAR # ENDTEXT)
- ELSE
- SKIP
- ENDIF
- ENDDO
- BAKNAME = FILNAME + ".XXX"
- IF FILE(BAKNAME)
- ERASE &BAKNAME
- ENDIF (BAKNAME)
- RENAME &PROGNAME TO &BAKNAME
- COPY TO &PROGNAME DELIM WITH BLANK
- CLEAR
- ?
- ? "DO WHILE STATEMENTS :",DOWHICNT
- ? "ENDDO STATEMENTS :",ENDDOCNTèIF DOWHICNT # ENDDOCNT
- ?? " <<<--PAIR NOT MATCHED---"
- ENDIF (DOWICNT)
- ?
- ? "IF STATEMENTS :",IFCNT
- ? "ENDIF STATEMENTS :",ENDIFCNT
- IF IFCNT # ENDIFCNT
- ?? " <<<--PAIR NOT MATCHED---"
- ENDIF (IFCNT)
- ?
- ? "DO CASE STATEMENTS :",DOCASCNT
- ? "ENDCASE STATEMENTS :",ENCASCNT
- IF DOCASCNT # ENCASCNT
- ?? " <<<--PAIR NOT MATCHED---"
- ENDIF (DOCASCNT)
- ?
- ?
- ?
- ?
- ?
- ? " THE DEBUGGED PROGRAM FILE IS NOW STORED UNDER THE NAME &PROGNAME"
- ?
- ? " THE ORIGINAL PROGRAM FILE IS NOW STORED UNDER THE NAME &BAKNAME"
- ? " FOR YOUR EDITING PURPOSES."
- ?
- @ 20,3
- WAIT " WOULD YOU LIKE A HARDCOPY OF DEBUGGED PROGRAM FILE? Y/N" TO ANS
- IF ANS <> "Y"
- CLEAR
- RETURN
- ENDIF
- SET PRINT ON
- ?
- ? " PROGRAM NAME : "+PROGNAME
- ?
- GO TOP
- DO WHILE .NOT. EOF()
- LIST
- ENDDO
- EJECT
- SET PRINT OFF
- SET TALK ON
- CLOSE DATABASES
- CLEAR
- RETURN